As various forms of distributed computing, such as cloud computing, have come to dominate the computing landscape, one long standing problem has been the inability to accurately determine, or in any meaningful way model, the state of the resources, both virtual and non-virtual, associated with a given cloud computing environment at a given time, i.e., to accurately determine the state of a given cloud computing environment at a given time.
This problem arises largely because a cloud computing environment typically includes virtual resources, such as server instances, data storage instances, and other virtual assets, and non-virtual resources, such as accounts, third party access systems, and various “bare metal” resources, each of which have different lifespans, operate in different computing environments and/or sub-environments, and perform their associated tasks using vastly differing operational parameters.
As an example, some resources, such as an account assigned to an enterprise, may be long lived, i.e., may exist for extended periods of time, while other resources, such as a virtual machine in operation, may be rather short lived, i.e., exist for only relatively short periods of time. Still other resources, like a virtual private cloud, a bastion host, or a load balancer, may have medium length lifespans. Consequently, simply determining when, or how often, to obtain data regarding the state of a cloud computing environment, and how long any collected data is valid, is not a trivial endeavor.
In addition, the various resources included in, or associated with, a given cloud computing environment vary so broadly, in both form and function, that using current methods to generate data gathering agents to interface with, and obtain data and operation metrics from, this vast array of different resource types would require an unacceptable amount of time, energy, and dedicated additional resources.
As a result of the situation discussed above, there is currently no efficient and effective mechanism for determining the precise state, or acceptable estimation of the state, or even the existence, of all the resources that are typically part of, or associated with, a given cloud computing environment. However, unfortunately, several management systems, services, applications, and billing systems operating in, or in association with, various cloud computing environments, need to obtain data indicating “a truth” that describes the state of the cloud computing environment in order to most efficiently and effectively perform their tasks.
What is needed is a method and system that leverages currently available cloud computing infrastructure to provide resource specific discovery agents to obtain state and/or metrics data from multiple types of resources in a cloud computing environment and that can then provide this data to a centralized computing environment modeling system that uses the collected data to generate a relatively accurate, and automatically updated, description of the first computing environment at a given time.